1 FreeMarker 란?

  • 프리마커는 자바 서블릿을 위한 오픈소스 HTML 템플릿 엔진이다.
  • 프리마커에서는 HTML을 템플릿으로 저장하는데 이들은 결국 템플릿 객체로 컴파일 된다.
  • 이 템플릿 객체들은 서블리셍서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다.
  • 프리마커 객체들은 서블릿에서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다.
[*.java]Servlet \+Template[*.ftl] = [*.html]Output

2 FreeMarker 구조

  • FreeMarker는 표현의 결과물을 HTML(템플릿)로 관리하고 여기에 자바 객체를 연결하여 최종적인 결과를 만들어낸다.

3 FreeMarker 셋팅

3.1 다운로드

3.2 설치

  • freemarker.jar 파일을 WEB-INF/lib 안에 넣는다.
  • ecilpse에서는 프로젝트 마다 lib안에 import 시킨다.

3.3 Java 코딩시


import freemarker.template.*;

  • FreemarkerServlet를 extends 한 후 Java coding 해주면 된다.

4 FreeMaker 문법


FTL tag 
<# > 


주석 
<#--주석달기--> 


반복문 
1. 
<#list [Object code에서 key값 ]  as  [별칭할 값]> 
 
2. for(int i=0;i<10;i++)
<#list  1..10  as i > 
      ${i}
   <#assign i=i+1?int>
 
3. 사이즈를 알고 싶을때.. Key 값이 list 인 경우
 
<#assign size=list?size>
 
4. 다른 변수로 정의하고 싶을때에는 
<#setting [새로]=[기존]>

 
5. 변수선언 

<#assign x=0>   <#--x에 0를 할당해 준것이다. --> 
x값을 출력하고자 할때 --> ${x} 


6. <#macro green> 
"<@green>"이런식으로 쓴다. 
주로 변하지 않는 변수를 이렇게 선언해서 쓴다. 
 
7. 조건문 
<#if> 
 
8. int형으로 선언해 주고 싶은때에는
<#assign x=0 ? int>


5 FreeMarker 예제

5.1 TLD 파일

  • fmtag.tld (WEB-INF 아래 위치)

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
      PUBLIC "-Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
      "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">
<taglib>
  <tlibversion>2.0<.tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>FreeMarker JSP Support</shortname>

  <tag>
   <name>template</name>
   <tagclass>freemarker.ext.jsp.FreemarkerTag</tagclass>
   <bodycontent>tagdependent</bodycontent>
   <info>Allow evaluation of FreeMarker templates inside JSP</info>
   <attribute>
    <name>cashing</name>
    <required>false</required>
   </attribute>
  </tag>
</taglib>

5.2 java 파일

  • SimpleBean.java (WEB-INF/classes/freemarker/examples/jsp)
  • Custom Tag 수행을 위한 Tag Handler Class

package freemarker.examples.jsp;

public class SimpleBean
{
  private static String[] arr = {"a","b","c","d"};
  private String theString = "Hello from " + toString();

  public void setString(String foo)
  {
    theString = foo;
  }

  public String getString()
  {
    return theString;
  }

  public String[] getArray()
  {
    return arr;
  }
}

5.3 jsp 파일

  • freemarker2.jsp (View 파일)

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib uri="/WEB-INF/fmtag.tld" prefix="fm" %>

<jsp:useBean id="mybean" class="freemarker.examples.jsp.SimpleBean"/>
<jsp:useBean id="mybeanreq" class="freemarker.examples.jsp.SimpleBean" scope="request" />

<fm:template>
<html>
<body>
 <h1>FreeMarker JSP example</h1>
 <hr>
 <p>JSP 페이지</p>

 <#assign mybean = page.mybean>
 <#assign mybeanreq = request.mybeanreq>

 <p>page : ${mybean.string}
 <#list mybean.array as item>
  <br>${item}
 </#list>

 <p><b>Note:</b>
</body>
</html>
</fm.template>